1. Technical Field of the Invention
This invention relates to the field of communication networks and system interconnections between computing and communication devices and instrumentation. More specifically, the invention relates to an improved Fibre Channel data management technique and relates to the management of multiple, active sequences which are simultaneously in transit on a Fibre Channel.
2. Description of Related Art
Local area networks (LANs) are used to connect computers, computer servers, thin clients and peripherals including printers and disk arrays. Through the LAN, the connected devices communicate and transfer data. LANs are widely used, and their performance is adequate for most tasks. However, they do not provide instant access to all data, especially when data is very large and needs to be moved numerous times. LAN performance has evolved slowly over their 20-year history. For example, the increase in throughput for a LAN has been on the order of 10-20 times. In contrast, computing speed in that timeframe has increased a million-fold. The most common LAN today is 10baseT Ethernet, which typically delivers 300 KB/sec. There is, therefore, ongoing development of improved LANs and methods of providing communication between connected devices.
Fibre Channel is the general name given to a set of integrated standards being developed by the American National Standards Institute (ANSI). See for example, X3T9.3 Task Group of ANSI: Fibre Channel Physical and Signaling Interface (FC-PH) Rev. 4.2 Oct. 8, 1993.
Fibre Channel is a campus-wide interconnection standard that is designed primarily to interconnect peripherals, mass storage systems such as redundant arrays of inexpensive disks (RAID), imaging and archiving systems, mainframes, engineering workstations, and other high speed devices. Often seen as the successor to the Small Computer Serial Interface (SCSI) standard, Fibre Channel is a high-speed channel that typically uses fiber optics to interconnect computing devices in a relatively local environment, such as a laboratory or a campus. Thus, the Fibre Channel focuses more on providing bandwidth between devices than a completely flexible network. Fibre Channel is a switched technology. The Fibre Channel interface dedicates circuits for transferring data while allowing other devices to access the channel when it is free. The Fibre Channel interface supports variable length transmissions; it can transmit large blocks of data without dividing the blocks into smaller packets. The speed of Fibre Channel is in the range of 133 Mbit/sec-1062 Mbit/sec. While multimode optical fiber is used most often, single mode optical fiber, coaxial cable, and shielded twisted pair wire are also occasionally used in practice. A promising application area for Fibre Channel is in a Storage Area Network (SAN) such as those used in archives and in the printing and publishing industry. In these applications, latency issues and uneven throughput are less important than video and teleconferencing.
The Fibre Channel interface transports data by reading the buffer information, packaging the data, and sending it across the crossbar switching architecture, or fabric. Underlying data, formats, packet structures or frame types are not important in the switching scheme. While Fibre Channel has its own protocol it also supports FDDI, SCSI, HIPPI and IPI. The flexibility comes in part because Fibre Channel relies on ports logging in with each other and the fabric. This flexibility also leads to support of a wide variety of topologies, including point-to-point, crosspoint switched and arbitrated loops.
The Fibre Channel protocol consists of five layers. FC-0 defines the physical link, including the fiber, the connectors, the transmitters and receivers. FC-1 defines the transmission protocol, including the encoding and decoding rules, special characters and error control. FC-2 is the signaling protocol and is the layer that is the concern of this specification. FC-3 and FC-4 contain advanced features, and mapping rules, respectively.
The signaling protocol (FC-2) level serves as the transport mechanism of Fibre Channel. F-2 defines a frame as a basic building block of a Fibre Channel connection. A frame is the smallest indivisible packet of data that is sent on the link. A frame is at most 2148 bytes. To accommodate longer strings of data, one or more related frames transmitted unidirectionally from one port to another comprise a sequence. In general, this patent relates to an improved scheme for managing the related data in related frames that form a sequence. Further, this patent also generally relates to the management of multiple, active sequences which are simultaneously in transit on a Fibre Channel.
A frame begins with a 4 byte start of frame (SOF) delimiter, followed by a 24 byte frame header, a 0-2112 byte data field (which may include additional optional header information up to a total of 64 bytes), a 4 byte cyclic redundancy check (CRC) error code. The frame ends with a 4 byte end of frame (EOF) delimiter. The 24 byte frame header is made up of a set of control fields which include routing control (R_CTL), destination address or identifier (D_ID), source address or identifier (S_ID), frame type (TYPE), frame control (F_CTL), sequence identifier (SEQ_ID), data field control (DF_CTL), sequence count (SEQ_CNT), originator exchange identifier (OX_ID), responder exchange identifier (RX_ID), and parameter value (PARAM). It is relevant to this invention to note that frames in the same sequence will share have the same S_ID, SEQ_ID and the same OX_ID. The S_ID is 24 bits long, the OX_ID is 16 bits long and the SEQ_ID is 8 bits long.
In order to manage streams of sequences in a Fibre Channel, it is useful to assign a sequence status block to a sequence. This sequence status block contains data that is useful in tracking the status of a sequence that is in transit. Examples of data commonly found in sequence status blocks include the OX_ID, the lowest sequence count, the highest sequence count, the sequence count of the last frame received. From the data in the sequence status block calculations can be made to determine sequence completion status, sequence error status, and the association of sequence data to data buffers (typically specified via a DMA buffer list).
A hash table look-up method is often used to organize and retrieve data in memory. The hash table look-up method applies an algorithm to the data that needs to be stored in memory in order to define the table location or position of the hash table into which this selected data is written. To retrieve the data, the hash algorithm is applied to the search item. It is not uncommon for a hash algorithm to produce an event termed xe2x80x9ca collision.xe2x80x9d Collisions occur when items hash to the same location in the table. In the art, these are called synonyms. In the event of a collision, the synonym is placed elsewhere. This is achieved by probing a second time, searching a series of table locations until an empty one is found. Similarly, on retrieval, a process of secondary probing is employed to access the table location in the event that the first location contains an entry for a different address.
Most hashing techniques use one or more common randomizing functions, or some variation thereon. For an example, one randomizing function involves taking the remainder of the ratio of the key to a prime number. The role of the randomizing function is to compress the key field into a much smaller integer index into the hash table. The technique is more effective for keys that vary widely, because in these instances, there is more randomization and fewer collisions. As a consequence the least significant bits of a reference are often used in practice as the key. Hashing functions are typically viewed as one-way randomized mappings of the key set into the hash space. In fact, hashing is often used in data encryption for security applications since the index computed by the hashing function can not be used to reconstruct the key.
Locating a sequence status block is currently accomplished with a 48-bit index. To construct a simple index for locating an associated sequence status block would require an index of 48 bits which renders it impractical as a lookup mechanism.
Therefore it would be advantageous to have a means of efficiently locating the sequence status block which is associated with an arbitrary Fibre Channel sequence.
The present invention has been achieved in order to overcome the foregoing problems, and allow the efficient management of streams of Fibre Channel sequences that contain multiple data frames. It is the object of the present invention to provide for an improved Fibre Channel sequence management system.
A mapping of Fibre Channel header information to associated sequence status information is required for Fibre Channel sequence management whereby certain fields of the Fibre Channel header uniquely identify a sequence. Certain protocols and/or profiles for Fibre Channel ease the mapping of header information to sequence status information by allowing both the sending agent and the receiving agent to select and maintain a unique identification tag that is valid throughout the set of sequences associated with a Fibre Channel exchange, or other, operation.
Unfortunately, other protocols and/or profiles for Fibre Channel operation do not allow for simple mapping of Fibre Channel header information to sequence status information. It is for this case that the invention described herein is effective in achieving the same.
This invention provides an apparatus and method for efficiently locating the sequence status block that is associated with an arbitrary Fibre Channel sequence.